feat(i18n-ko): native surfaces and E2E fixtures - #4515
Conversation
1e37f24 to
16f0432
Compare
|
Plan for the P1, folded with the two named downstream gaps so the slice lands as one coherent contract change:
This slice deliberately does not touch the empty-bubble half of #4804 (out of scope as agreed). Will start after the current review round settles so the layers land and get re-reviewed together. |
|
The durable-admission half is now pinned by tests, pushed in 54a454d: quote-only and attachment-only root Turn inputs are admitted through Also pushed in fef4f35 (rebase onto current main): the decoder-side structured-content acceptance, the compatibility epoch renumbered to 126 (correctly above main's 125, resolving the collision you flagged), the compaction estimate counting the structured envelope, and the recap carrier placeholder. Remaining before merge: the composition-level verification you specified (submit → durable admission → snapshot/replay → model input against a real Host subprocess). The storage seam is now proven by unit test; the Host-subprocess run is the piece I will add next. |
16f0432 to
eef4c42
Compare
Add `ko` to UI_LOCALES so the closed locale vocabulary carries Korean: the `isUiLocale`/`isUiLocalePreference` guards accept it, and `resolveSystemUiLocale` recognizes the `ko` prefix through the existing case-insensitive, `_`-normalizing path (`ko`, `ko-KR`, `ko_KR`, `ko_KR.UTF-8`), so an `auto` preference resolves to it without being persisted. `uiLocaleToIntlLocale` stops being identity. Every locale so far was already the tag `Intl` wants; bare `ko` leaves the region open, and the region is what selects Korean date, number, and plural formatting, so it is widened to `ko-KR`. The return type becomes the literal union of the tags actually emitted — `'zh-CN' | 'zh-TW' | 'en' | 'ko-KR'` — rather than `string`, so the set stays visible in the signature. Every call site feeds an `Intl` constructor, `toLocaleString`, or `localeCompare`, all of which take `string`, so narrowing it is safe. The formatter test can no longer assert identity, so it pins the tag table instead and checks each tag is canonical, which keeps a locale added later from reaching `Intl` without a deliberate tag. Refs apache#3975 Generated-by: Claude Code
…3980) - Add ko to UI_LOCALES and resolve ko-KR system locales - Localize startup/quit/boot, diagnostics, and notification native copy - Add ko E2E fixture flags and ko-locale spec - Add ko stubs to UiCatalog entries (renderer English fallback until apache#3977–apache#3979) Generated-by: Cursor Co-authored-by: Cursor <cursoragent@cursor.com>
Replace the ko: EN stub with a dedicated KO translation block. Generated-by: Cursor Co-authored-by: Cursor <cursoragent@cursor.com>
- rebase Korean locale commits onto latest upstream/main - restore catalogs broken by stub insertion and re-add ko stubs - keep @maka/ui and @maka/core builds green after conflict cleanup Co-authored-by: Cursor <cursoragent@cursor.com>
eef4c42 to
9af408a
Compare
Summary
Wire
kothrough core locale resolution, desktop native surfaces, and E2E fixtures. This follows the same pattern as #3853 (zh-TW): Korean copy for startup/quit/boot dialogs, diagnostics, notifications, permission overlay, and related main-process fallbacks; E2E fixture flags acceptko/ko-krwithout thetoLowerCaseregression fixed for Chinese locales in #3853 review.Renderer
UiCatalogtypes require akokey oncekois inUI_LOCALES. Catalogs outside the #3977–#3979 renderer slices use English stubs for now;session-collaboration-copyincludes a realKOblock.Fixes #3980
Verification
npm run build:test— passnode --test packages/core/dist/__tests__/ui-locale.test.js— passnode --test apps/desktop/dist/main/__tests__/e2e-fixture-locale.test.js— passko-locale.spec.ts) — not run locally (dev server not started)npm run lint/npm run format:check— not run for the full workspaceAI use
Tool(s) and scope: Cursor — implementation, translation stubs, tests, and PR text. The
update(i18n-ko): session-collaboration…commit includes aGenerated-by: Cursortrailer.Checklist
Does this PR entail a change in behavior?